This document is for those interested in hearing a bit more about how Mega Man 4 Voyage was developed, as well as how ROM hacking compares to fan games made in Game Maker or other modern software.

BACKGROUND:
The first time I heard of ROM hacking was all the way back in 2002, at the age of 15. Fan games weren't around yet and even the oldest Mega Man games weren't that old. I was thrilled when I discovered that I could easily edit the levels in all six NES games, using various editors available at the time. However, the editors' were riddled with quite a few small bugs and annoyances, and their capabilities were limited to rearranging the blocks and enemies you see on screen. The way the games were programmed (which I knew nothing about at the time) also meant that moving certain blocks, rooms, enemies or bosses from their designated places would result in a glitched or unbeatable game.

While Mega Man 3 was my favourite game and the one I wanted to hack the most, Mega Man 2 (and 1) had a more developed editor at the time, called Visine, and eventually I managed to finish my first hack in 2005, called Mega Man 2: Revenge of the Eight Robot Masters. The following years, Mega Man 3, 4 and 5 finally started to get their fair share of released hacks, mostly thanks to matrixz's editor called MegaFLE, which got more and more features as time went by. I released Mega Man 3: The Rise and Fall of Dr. Wily in 2009 and Mega Man 3: The Battle of Gamma two years later. For the latter, I managed to learn how Mega Man 3's (and 4, 5 and 6's) music format works and replace some of the original music with a few songs from the Game Boy series and a few original songs. Other than that, I still knew nothing about NES programming, and I was still dependent on using a level editor.

MM4 VOYAGE IS BORN:
As soon as my last MM3 hack was finished in 2011, I knew that I wanted to make yet another hack. Standalone fan games had slowly started to emerge at this point, but most of them were short, unfinished or had Mega Man's movement physics messed up, so ROM hacking was still the way to go for most people, including me. Since I had already hacked Mega Man 3 twice, it was time to try my luck with Mega Man 4. This time, I decided to not only change the level layouts, but also change their visual appearance, borrowing graphics from Mega Man 9 and 10 and other NES games. I also took a deeper dive into MM3-6's music format, so that I would be able to make some more complex songs than last time. Seeing how other ROM hacks at the time often had random but catchy or memorable titles, I decided to name the hack Mega Man 4 Voyage. Work commenced on the hack in early 2012, and the first preview video was put on Youtube later that year. With both new music and new graphics, I was confident the hack would appeal to the Mega Man community.

Then things changed rapidly in 2013. MegaPhilX's Mega Man Unlimited was released. Suddenly, we now had a complete fan game with all new contents, correct moving physics and an official feel to it. Suddenly, a ROM hack with some new music and graphics with it didn't seem that exciting anymore. The release of Mega Man: Rock Force next year further established the new era of Mega Man fan games. I was debating with myself about whether I should cancel Voyage and make a fan game instead, or if I should continue ROM hacking. If I chose the latter, however, I would have to make the hack stand out more. Perhaps some new enemies would do the trick? It was now early 2014. It was time to give the so-called 6502 assembly language a go.

The good thing about hacking Mega Man 4 is that there exists heavy documentation on how the game mechanics work and where various data is located, written by the same matrixz who made the MM3-6 level editor. Using the document as a guide I tried to learn the NES programming language by understanding how some of the existing enemies work. At first I found it frustrating, as the 6502 assembly language is much more primitive than modern programming languages, but soon, I was able to make my first new enemies; Tellies and Sniper Joes, mostly by reusing code. From there on, I made multiple new enemies, starting out simple, but going more advanced as time went on. A few enemies could be copied out of Mega Man 5 with relatively few modifications, but the enemies I used from all other games had to be programmed from scratch.

RAISING THE BARS
I was now having what I wanted in my hack, all I had to do now was to finish the levels and tweak the existing bosses a bit and the hack would be more extensive than most other ROM hacks, if not as huge as MM Unlimited or Rock Force. But no. More Mega Man fan games were relevealed, yet another one was finished (MM Super Fighting Robot), and Mega Man Maker and Make a Good Mega Man Level Contest were released. Once again, I was afraid that Voyage would go by unnoticed, even if a handful a people seemed to like my preview videos on Youtube. I started to program a few bosses, but seeing how time consuming all the programming was, I was beginning to worry if I would ever get finished. However, in early 2017 I was lucky enough to have fellow ROM hacker MartsINY asking to join in, proposing to program the remainder of the bosses so that I could spend my time on finalizing other things. At the same time, I asked a couple of chiptune composers if they would like to join in on finalizing the soundtrack.

The addition of these team members certainly took quite a lot of work off of me. However, the bosses MartsINY made and the songs I got from all the composers were actually so good that other shortcomings in the hack became apparent; a lot of the graphics I had imported were simplistic and not very good looking, and some of my earliest songs felt empty compared to the those made by everyone else (though this was also partly because I didn't know you could expand the amount of data used on music until recently). I had to improve what was already in the hack even more. MartsINY helped me deciding what graphics should be replaced or improved, and he also assisted me in getting rid of small bugs and annoyances all over the hack. Meanwhile, the music team worked on finalizing the ever expanding soundtrack, now consisting of almost 40 unique songs.

THE SHORTCOMINGS - AND THE POSITIVES - OF A ROM HACK
I guess this is a nice time to mention how much more difficult it is to make a ROM hack than a fan game with the tools we have today. Sure enough, if you only want to edit a few level layouts and enemy placements, it's really simple to fire up Visine or MegaFle X and edit the NES ROMS. However, if you want to put actual new contents in a ROM such as new graphics, sprites, music, enemies, bosses and cutscenes, it's tedious, finicky and severly limited by hardware constraints and how much space you have in the ROM. Level graphics have to meet criteria for how many colors each 16x16 tile can have. Sprite graphics must be assembled and put together tile by tile. Music, until recently, had to be written in a HEX editor (contrary to what people think, the sound engine works very differently from FamiTracker modules). Too large enemies result in sprite flicker. Cutscenes are awkwardly programmed. 

On the contrary, by making a hack, you get a product that is more faithful to the original classic MM games and can be played on real hardware. You also get to use a game engine with physics and movements feeling 100 percent right. Finally, you get a game that is easy to play and can be played on any emulator; there's no installation process and you don't have to fiddle with video, audio and input settings.

So yeah, you can't really compare a ROM hack to a fan game. They're two different worlds. Standalone fan games will always have the upper hand when it comes to originality and possibilities. Heck, had I started on Voyage a year or two later, it would probably end up being an exe file instead of a ROM. Still, I believe we've managed to deliver a ROM hack that closely resembles a fan game. With the exception of the sprites of the 8 robot masters and some of the enemies, everything in this hack has been changed from vanilla Mega Man 4. Furthermore, we've made sure to remember that levels and bosses have to be challenging, yet fun and fair, something not even the most extensive fan games can always guarantee.

WHAT NOW?
It's december 2018 as I'm writing this, and Mega Man 4 Voyage is finally done, after all these years. What was supposed to be a relatively simple hack ended up being something bigger than I could have ever imagined. I hope you end up liking it, I really do; I've invested way too much time on it!

So what's coming up from me next? As I'm now 31 years old, I guess it's safe to say that I won't have time for such big projects anymore. However, I'll still be around in the community, perhaps helping others with their ROM hacks or fan games, and make some small contributions here and there. Only time can tell!